using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.Serialization;
using System.Xml.Serialization;
using Cuahsi.Data.Interop.WaterML2.swe_20;
using Renci.Data.Interop.OpenGIS.Gml_32;
using QuantityPropertyType = Renci.Data.Interop.OpenGIS.Gml_32.QuantityPropertyType;

namespace Cuahsi.Data.Interop.WaterML2
{
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
    [Serializable()]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [XmlType(Namespace = "http://www.opengis.net/waterml/2.0")]
    [XmlRoot("TVPMeasurementMetadata", Namespace = "http://www.opengis.net/waterml/2.0", IsNullable = false)]
    [DataContract(Name = "TVPMeasurementMetadataType", Namespace = "http://www.opengis.net/waterml/2.0")]
    public partial class TVPMeasurementMetadataType : TVPMetadataType
    {

        private UnitReference uomField;

        private ReferenceType interpolationTypeField;

        private ReferenceType censoredReasonField;

        private QuantityPropertyType accuracyField;

        private string aggregationDurationField;

        public TVPMeasurementMetadataType()
        {
            this.accuracyField = new QuantityPropertyType();
        }

        [DataMember()]
        public UnitReference uom
        {
            get
            {
                return this.uomField;
            }
            set
            {
                this.uomField = value;
            }
        }

        [DataMember()]
        public ReferenceType interpolationType
        {
            get
            {
                return this.interpolationTypeField;
            }
            set
            {
                this.interpolationTypeField = value;
            }
        }

        [DataMember()]
        public ReferenceType censoredReason
        {
            get
            {
                return this.censoredReasonField;
            }
            set
            {
                this.censoredReasonField = value;
            }
        }

        [DataMember()]
        public QuantityPropertyType accuracy
        {
            get
            {
                return this.accuracyField;
            }
            set
            {
                this.accuracyField = value;
            }
        }

        [XmlElement(DataType = "duration")]
        [DataMember()]
        public string aggregationDuration
        {
            get
            {
                return this.aggregationDurationField;
            }
            set
            {
                this.aggregationDurationField = value;
            }
        }
    }
}